package com.manjusaka.structure7.Bridge;

/**
 * 桥接模式--处理多维度的变化
 * Created by manjusaka on 2017/7/5.
 * 原理：使用多态的方式，在一个类中放入另一个的引用，这两个类都有自己的工作的方式
 */
public class BridgePattern {
    public static void main(String[] args) {
        WritingBrush WritingBrush=new BigWritingBrush();
        WritingBrush.doPaint(new Red());
    }
}

interface Color {
    void print();
}

/**
 * 毛笔类
 */
abstract class WritingBrush {
    protected Color color;

    public void setColor(Color color) {
        this.color = color;
    }

    /**
     * 抽象的方法，来是他的子类实现这个方法
     */
    abstract void doPaint(Color c);
}

class Red implements Color {
    public void print() {
        System.out.println("Red");
    }
}

class Blue implements Color {
    public void print() {
        System.out.println("Blue");
    }
}

class BigWritingBrush extends WritingBrush {
    void doPaint(Color c) {
        setColor(c);
        color.print();
        System.out.println("大毛笔");
    }
}
